﻿using System;
using System.Windows.Forms;
using VideoClub.Business;
using VideoClub.Entities;

namespace VideoClub.UI.Socios
{
    public partial class FrmEditarSocio : Form
    {
        public FrmEditarSocio()
        {
            InitializeComponent();
        }

        private String posicionado = "";
        private Socio socioPorModificar = new Socio();
        private Socio socioExistente = new Socio();


        public void posicionarAlta()
        {
            cargarCombos();
            posicionado = "Alta";
        }

        public void AgregarSocio()
        {
            try
            {
                
                if (validarSocios())
                {
                    var socioAInsertar = new Socio();   
                    socioAInsertar.pnombre = txtNombre.Text;
                    socioAInsertar.papellido = txtApellido.Text;
                    socioAInsertar.pfechaNacimiento = dtpFechaNacimiento.Value;
                    socioAInsertar.ptipoDocumento = cboTipoDocumento.SelectedItem as TipoDocumento;
                    socioAInsertar.pdocumento = Convert.ToInt32(txtNumero.Text);
                    socioAInsertar.pbarrio = cboBarrio.SelectedItem as Barrio;
                    socioAInsertar.pcalle = txtCalle.Text;
                    socioAInsertar.paltura = Convert.ToInt32(txtAltura.Text);
                    socioAInsertar.pnumeroTelefono = Convert.ToInt32(txtTelefono.Text);
                    socioAInsertar.pemail = txtEmail.Text;
                    socioAInsertar.pfechaIngreso = DateTime.Now;
                    socioExistente = SocioBO.InsertarActor(socioAInsertar);

                    if (socioExistente != null)
                    {
                        MessageBox.Show("El socio se inserto correctamente.");
                        Close();
                    }
                    else
                    {
                        MessageBox.Show(String.Format("El socio que desea insertar ya existe. \nNombre:{0}\nApellido:{1}", socioAInsertar.pnombre, socioAInsertar.papellido), "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Faltan datos a cargar.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al insertar socio.");
                throw ex;
            }
        }

        private Boolean validarSocios()
        {
            if (txtNombre.Text == "")
                return false;
            if (txtApellido.Text == "")
                return false;
            if (txtCalle.Text == "")
                return false;
            if (txtAltura.Text == "")
                return false;
            if (txtTelefono.Text == "")
                return false;
            if (txtEmail.Text == "")
                return false;


            return true;
        }

        public void posicionarModificacion(Socio socioAModificar)
        {
            cargarCombos();

            posicionado = "Modificada";
            txtApellido.Text = socioAModificar.papellido.Trim();
            txtNombre.Text = socioAModificar.pnombre.Trim();
            txtNumero.Text = socioAModificar.pdocumento.ToString();
            cboTipoDocumento.SelectedValue = socioAModificar.ptipoDocumento.pidTipoDocumento;
            dtpFechaNacimiento.Value = socioAModificar.pfechaNacimiento;
            cboBarrio.SelectedValue = socioAModificar.pbarrio.pidBarrio;
            txtCalle.Text = socioAModificar.pcalle;
            txtAltura.Text = socioAModificar.paltura.ToString();
            txtTelefono.Text = socioAModificar.pnumeroTelefono.ToString();
            txtEmail.Text = socioAModificar.pemail;
            socioPorModificar = socioAModificar;
        }

        private void cargarCombos()
        {
            cboBarrio.DataSource = DatosComunesBO.ObtenerTodosLosBarrios();
            cboBarrio.DisplayMember = "pnombre";
            cboBarrio.ValueMember = "pidBarrio";

            cboTipoDocumento.DataSource = DatosComunesBO.ObtenerTodosLosTiposDocumentos();
            cboTipoDocumento.DisplayMember = "pdescripcion";
            cboTipoDocumento.ValueMember = "pidTipoDocumento";
        }

        private void Aceptar_Click(object sender, EventArgs e)
        {
            switch (posicionado)
            {
                case "Alta":
                    AgregarSocio();
                    break;
                case "Modificada":
                    ModificarSocio();
                    break;
            }
        }

        private void ModificarSocio()
        {
            try
            {
                var socioModificar = new Socio();
                socioModificar.pnombre = txtNombre.Text;
                socioModificar.papellido = txtApellido.Text;
                socioModificar.pfechaNacimiento = dtpFechaNacimiento.Value;
                socioModificar.ptipoDocumento = cboTipoDocumento.SelectedItem as TipoDocumento;
                socioModificar.pdocumento = Convert.ToInt32(txtNumero.Text);
                socioModificar.pbarrio = cboBarrio.SelectedItem as Barrio;
                socioModificar.pcalle = txtCalle.Text;
                socioModificar.paltura = Convert.ToInt32(txtAltura.Text);
                socioModificar.pnumeroTelefono = Convert.ToInt32(txtTelefono.Text);
                socioModificar.pemail = txtEmail.Text;
                socioModificar.pfechaIngreso = DateTime.Now;
                socioModificar.pidSocio = socioPorModificar.pidSocio;

                socioExistente = SocioBO.ActualizarSocio(socioModificar);

                if (socioExistente != null)
                {
                    MessageBox.Show("El socio se actualizo correctamente.");
                    Close();
                }
                else
                {
                    MessageBox.Show(String.Format("El socio que desea insertar ya existe. \nNombre:{0}\nApellido:{1}", socioModificar.pnombre, socioModificar.papellido), "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al actualizar socio.");
                throw ex;
            }
        }

        private void Cancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void txtNombre_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validaciones.Validaciones.SoloLetras(e);
        }

        private void txtApellido_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validaciones.Validaciones.SoloLetras(e);
        }

        private void txtNumero_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validaciones.Validaciones.SoloNumeros(e);
        }

        private void txtCalle_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validaciones.Validaciones.SoloLetras(e);
        }

        private void txtAltura_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validaciones.Validaciones.SoloNumeros(e);
        }

        private void txtTelefono_KeyPress(object sender, KeyPressEventArgs e)
        {
            Validaciones.Validaciones.SoloNumeros(e);
        }


    }
}
